diff --git a/system/core/CodeIgniter.php b/system/core/CodeIgniter.php
index 182f17a..b3e984d 100755
--- a/system/core/CodeIgniter.php
+++ b/system/core/CodeIgniter.php
@@ -94,7 +94,7 @@
  * Note: Since the config file data is cached it doesn't
  * hurt to load it here.
  */
-	if (isset($assign_to_config['subclass_prefix']) && $assign_to_config['subclass_prefix'] !== '')
+	if ( ! empty($assign_to_config['subclass_prefix']))
 	{
 		get_config(array('subclass_prefix' => $assign_to_config['subclass_prefix']));
 	}
diff --git a/system/core/Common.php b/system/core/Common.php
index a773c4f..8af7d63 100644
--- a/system/core/Common.php
+++ b/system/core/Common.php
@@ -436,12 +436,11 @@
 			505	=> 'HTTP Version Not Supported'
 		);
 
-		if ($code === '' OR ! is_numeric($code))
+		if ($code == '' OR ! is_numeric($code))
 		{
 			show_error('Status codes must be numeric', 500);
 		}
-
-		if (isset($stati[$code]) && $text === '')
+		elseif (isset($stati[$code]) && $text === '')
 		{
 			$text = $stati[$code];
 		}
diff --git a/system/core/Config.php b/system/core/Config.php
index 0e5fa52..3de1bcb 100755
--- a/system/core/Config.php
+++ b/system/core/Config.php
@@ -189,7 +189,7 @@
 	 */
 	public function item($item, $index = '')
 	{
-		if ($index === '')
+		if ($index == '')
 		{
 			return isset($this->config[$item]) ? $this->config[$item] : FALSE;
 		}
diff --git a/system/core/Input.php b/system/core/Input.php
index 284b156..73f46ba 100755
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -267,18 +267,22 @@
 		{
 			$prefix = config_item('cookie_prefix');
 		}
-		if ($domain === '' && config_item('cookie_domain') !== '')
+
+		if ($domain == '' && config_item('cookie_domain') != '')
 		{
 			$domain = config_item('cookie_domain');
 		}
+
 		if ($path === '/' && config_item('cookie_path') !== '/')
 		{
 			$path = config_item('cookie_path');
 		}
+
 		if ($secure === FALSE && config_item('cookie_secure') !== FALSE)
 		{
 			$secure = config_item('cookie_secure');
 		}
+
 		if ($httponly === FALSE && config_item('cookie_httponly') !== FALSE)
 		{
 			$httponly = config_item('cookie_httponly');
@@ -324,7 +328,7 @@
 			return $this->ip_address;
 		}
 
-		if (config_item('proxy_ips') !== '' && $this->server('HTTP_X_FORWARDED_FOR') && $this->server('REMOTE_ADDR'))
+		if (config_item('proxy_ips') != '' && $this->server('HTTP_X_FORWARDED_FOR') && $this->server('REMOTE_ADDR'))
 		{
 			$proxies = preg_split('/[\s,]/', config_item('proxy_ips'), -1, PREG_SPLIT_NO_EMPTY);
 			$proxies = is_array($proxies) ? $proxies : array($proxies);
diff --git a/system/core/Output.php b/system/core/Output.php
index 496948a..9b85b3e 100755
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -101,7 +101,7 @@
 	 */
 	public function __construct()
 	{
-		$this->_zlib_oc = @ini_get('zlib.output_compression');
+		$this->_zlib_oc = (bool) @ini_get('zlib.output_compression');
 
 		// Get mime types for later
 		if (defined('ENVIRONMENT') && file_exists(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'))
@@ -160,7 +160,7 @@
 	 */
 	public function append_output($output)
 	{
-		if ($this->final_output === '')
+		if ($this->final_output == '')
 		{
 			$this->final_output = $output;
 		}
@@ -505,7 +505,7 @@
 	 *
 	 * @param 	object	config class
 	 * @param 	object	uri class
-	 * @return	void
+	 * @return	bool
 	 */
 	public function _display_cache(&$CFG, &$URI)
 	{
diff --git a/system/core/Router.php b/system/core/Router.php
index 93875bd..5bc0530 100755
--- a/system/core/Router.php
+++ b/system/core/Router.php
@@ -165,7 +165,7 @@
 		$this->uri->_fetch_uri_string();
 
 		// Is there a URI string? If not, the default controller specified in the "routes" file will be shown.
-		if ($this->uri->uri_string === '')
+		if ($this->uri->uri_string == '')
 		{
 			return $this->_set_default_controller();
 		}
@@ -483,14 +483,14 @@
 			$this->set_directory($routing['directory']);
 		}
 
-		if (isset($routing['controller']) && $routing['controller'] !== '')
+		if ( ! empty($routing['controller']))
 		{
 			$this->set_class($routing['controller']);
 		}
 
 		if (isset($routing['function']))
 		{
-			$routing['function'] = ($routing['function'] === '') ? 'index' : $routing['function'];
+			$routing['function'] = ($routing['function'] == '') ? 'index' : $routing['function'];
 			$this->set_method($routing['function']);
 		}
 	}
diff --git a/system/core/Security.php b/system/core/Security.php
index 9cbcd92..4593a10 100755
--- a/system/core/Security.php
+++ b/system/core/Security.php
@@ -847,4 +847,4 @@
 }
 
 /* End of file Security.php */
-/* Location: ./system/core/Security.php */
+/* Location: ./system/core/Security.php */
\ No newline at end of file
diff --git a/system/core/URI.php b/system/core/URI.php
index 0afb374..a575bc3 100755
--- a/system/core/URI.php
+++ b/system/core/URI.php
@@ -111,7 +111,7 @@
 
 			// Is there a PATH_INFO variable?
 			// Note: some servers seem to have trouble with getenv() so we'll test it two ways
-			$path = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO');
+			$path = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO');
 			if (trim($path, '/') !== '' && $path !== '/'.SELF)
 			{
 				$this->_set_uri_string($path);
diff --git a/system/core/Utf8.php b/system/core/Utf8.php
index 2b5a1f5..0a7ec50 100644
--- a/system/core/Utf8.php
+++ b/system/core/Utf8.php
@@ -54,7 +54,7 @@
 		if (
 			@preg_match('/./u', 'é') === 1		// PCRE must support UTF-8
 			&& function_exists('iconv')			// iconv must be installed
-			&& @ini_get('mbstring.func_overload') !== 1	// Multibyte string function overloading cannot be enabled
+			&& (bool) @ini_get('mbstring.func_overload') !== TRUE	// Multibyte string function overloading cannot be enabled
 			&& $CFG->item('charset') === 'UTF-8'		// Application charset must be UTF-8
 			)
 		{
